<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /*
            什么节流- 节流应用场景

            节流-内部实现的-闭包和延时器

            手写节流函数  （了解）

           事件循环---js同步代码和异步代码的执行过程

                ---大部分的api都是同步
                ---异步任务
                    ---  宏任务（延时器和定时器）
                    ---  微任务（queueMicroTask）

        面试时候；
            事件循环：
                 先执行一个宏任务-再清空所有的微任务--这个过程就叫做一个事件循环，这个过程一直在重复。


            具体执行过程---

            第一次事件循环
                --脚本执行第一次，会把整个脚本当做一个宏任务，遇到同步直接执行，
                    遇到异步-如果是异步宏任务--交给webAPI 执行，如果到期 进入 宏任务队列中
                    遇到异步-如果是异步微任务--交给webAPI 执行，如果到期 进入 微任务队列中

                 再再清空所有的微任务
                        遇到异步-如果是异步宏任务--交给webAPI 执行，如果到期 进入 宏任务队列中
                        遇到异步-如果是异步微任务--交给webAPI 执行，如果到期 进入 微任务队列中

            第二次事件循环
                -   先执行一个宏任务队列中宏任务，
                        遇到异步-如果是异步宏任务--交给webAPI 执行，如果到期 进入 宏任务队列中
                        遇到异步-如果是异步微任务--交给webAPI 执行，如果到期 进入 微任务队列中

                 再再清空所有的微任务
                        遇到异步-如果是异步宏任务--交给webAPI 执行，如果到期 进入 宏任务队列中
                        遇到异步-如果是异步微任务--交给webAPI 执行，如果到期 进入 微任务队列中


            */
    </script>

</body>

</html>